package main

// 数组
import (
	"crypto/sha256"
	"fmt"
)

func main() {
	// 数组是一个由固定长度的特定类型元素组成的序列
	// 一个数组可以由零个或多个元素组成
	var a [3]int
	fmt.Println(a[0])
	fmt.Println(a[len(a)-1])
	for i, v := range a {
		fmt.Printf("%d %d\n", i, v)
	}
	for _, v := range a {
		fmt.Printf("%d\n", v)
	}
	var q [3]int = [3]int{1, 2, 3}
	var r [3]int = [3]int{1, 2}
	fmt.Println(r[2])
	fmt.Println(q[2])
	// 如果在数组的长度位置出现的是“...”省略号，则表示数组的长度是根据初始化值的个数来计算
	qq := [...]int{1, 2, 3}
	fmt.Println(qq[2])

	aa := [2]int{1, 2}
	b := [...]int{1, 2}
	c := [2]int{1, 3}
	fmt.Println(aa == b, aa == c, b == c) // "true false false"
	d := [3]int{1, 2}
	fmt.Println(a == d) // compile error: cannot compare [2]int == [3]int
	c1 := sha256.Sum256([]byte("x"))
	c2 := sha256.Sum256([]byte("x"))
	fmt.Printf("%x\n%x\n%t\n%T\n", c1, c2, c1 == c2, c1)
}
